package tarea2.managedbeans;

import Negocio.InterfazNegocio;
import entidades.Administrativo;
import entidades.Medico;
import entidades.Paciente;
import java.sql.Date;
import java.util.List;
import javax.enterprise.context.ApplicationScoped;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;

@Named
@ApplicationScoped
public class ControlUsuarios {

    private String dni;
    private String nombre;
    private String contrasena;
    private String apellidos;
    private int year, mes, dia;
    private Date fecha;
    private String email;
    private String telefono;
    private String especialidad;
    private int numeroTrabajador;
    private String departamento;
    private String tipo;
    private String social;
    @Inject
    private InterfazNegocio negocio;

    public ControlUsuarios() {

    }

    public String anadirUsuario() {
        InterfazNegocio.Error e;
        switch (tipo) {
            case "1":
                if(social.equals("")){
                    FacesMessage fm = new FacesMessage("NºSeguridad Social vacio");
                    FacesContext.getCurrentInstance().addMessage("mensaje", fm);
                    return null;
                }
                Paciente p = new Paciente(dni, contrasena, nombre, apellidos,
                        Date.valueOf(year + "-" + mes + "-" + dia), email, telefono, social);
                e = negocio.registrarUsuario(p);
                switch (e) {
                    case ERROR_USUARIO_REPETIDO:
                        FacesMessage fm = new FacesMessage("Usuario ya existe en la base de datos");
                        FacesContext.getCurrentInstance().addMessage("mensaje", fm);
                        return null;
                }
                break;
            case "2":
                if(especialidad.equals("")||departamento.equals("")){
                    FacesMessage fm = new FacesMessage("Faltan datos");
                    FacesContext.getCurrentInstance().addMessage("mensaje", fm);
                    return null;
                }
                Medico m = new Medico(dni, contrasena, nombre, apellidos,
                        Date.valueOf(year + "-" + mes + "-" + dia), email, telefono, especialidad, 1, departamento);
                e = negocio.registrarUsuario(m);
                switch (e) {
                    case ERROR_USUARIO_REPETIDO:
                        FacesMessage fm = new FacesMessage("Usuario ya existe en la base de datos");
                        FacesContext.getCurrentInstance().addMessage("mensaje", fm);
                        return null;
                }
                break;
            case "3":
                if(departamento.equals("")){
                    FacesMessage fm = new FacesMessage("Faltan datos");
                    FacesContext.getCurrentInstance().addMessage("mensaje", fm);
                    return null;
                }
                Administrativo ad = new Administrativo(dni, contrasena, nombre, apellidos,
                        Date.valueOf(year + "-" + mes + "-" + dia), email, telefono, 1, departamento);
                e = negocio.registrarUsuario(ad);
                switch (e) {
                    case ERROR_USUARIO_REPETIDO:
                        FacesMessage fm = new FacesMessage("Usuario ya existe en la base de datos");
                        FacesContext.getCurrentInstance().addMessage("mensaje", fm);
                        return null;
                }
                break;
            default:
                FacesContext ctx = FacesContext.getCurrentInstance();
                ctx.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Seleccione Rol", "Seleccione Rol"));
                break;
        }
        return null;
    }

    public String eliminarMedico(Medico m) {
        InterfazNegocio.Error e;
        e = negocio.eliminarUsuario(m);
        return null;
    }

    public String eliminarPaciente(Paciente p) {
        InterfazNegocio.Error e;
        e = negocio.eliminarUsuario(p);
        return null;
    }

    public String eliminarAdministrativo(Administrativo ad) {
        InterfazNegocio.Error e;
        e = negocio.eliminarUsuario(ad);
        return null;
    }

    public List<Medico> medicos() {
        return negocio.getMedicos();
    }

    public List<Paciente> pacientes() {
        return negocio.getPacientes();
    }

    public List<Administrativo> administrativos() {
        return negocio.getAdministrativos();
    }

    public String getDni() {
        return dni;
    }

    public void setDni(String dni) {
        this.dni = dni;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getContrasena() {
        return contrasena;
    }

    public void setContrasena(String contrasena) {
        this.contrasena = contrasena;
    }

    public String getApellidos() {
        return apellidos;
    }

    public void setApellidos(String apellidos) {
        this.apellidos = apellidos;
    }

    public int getYear() {
        return year;
    }

    public void setYear(int year) {
        this.year = year;
    }

    public int getMes() {
        return mes;
    }

    public void setMes(int mes) {
        this.mes = mes;
    }

    public int getDia() {
        return dia;
    }

    public void setDia(int dia) {
        this.dia = dia;
    }

    public Date getFecha() {
        return fecha;
    }

    public void setFecha(Date fecha) {
        this.fecha = fecha;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getTelefono() {
        return telefono;
    }

    public void setTelefono(String telefono) {
        this.telefono = telefono;
    }

    public String getEspecialidad() {
        return especialidad;
    }

    public void setEspecialidad(String especialidad) {
        this.especialidad = especialidad;
    }

    public int getNumeroTrabajador() {
        return numeroTrabajador;
    }

    public void setNumeroTrabajador(int numeroTrabajador) {
        this.numeroTrabajador = numeroTrabajador;
    }

    public String getDepartamento() {
        return departamento;
    }

    public void setDepartamento(String departamento) {
        this.departamento = departamento;
    }

    public String getTipo() {
        return tipo;
    }

    public void setTipo(String tipo) {
        this.tipo = tipo;
    }

    public String getSocial() {
        return social;
    }

    public void setSocial(String social) {
        this.social = social;
    }

    public InterfazNegocio getNegocio() {
        return negocio;
    }

    public void setNegocio(InterfazNegocio negocio) {
        this.negocio = negocio;
    }

}
